home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / perl5 / Gnome2 / Canvas.pod < prev    next >
Text File  |  2009-05-05  |  12KB  |  529 lines

  1. =head1 NAME
  2.  
  3. Gnome2::Canvas -  A structured graphics canvas
  4.  
  5. =cut
  6.  
  7. =for position SYNOPSIS
  8.  
  9. =head1 SYNOPSIS
  10.  
  11.   use strict;
  12.   use Gtk2 -init;
  13.   use Gnome2::Canvas;
  14.   my $window = Gtk2::Window->new;
  15.   my $scroller = Gtk2::ScrolledWindow->new;
  16.   my $canvas = Gnome2::Canvas->new;
  17.   $scroller->add ($canvas);
  18.   $window->add ($scroller);
  19.   $window->set_default_size (150, 150);
  20.   $canvas->set_scroll_region (0, 0, 200, 200);
  21.   $window->show_all;
  22.  
  23.   my $root = $canvas->root;
  24.   Gnome2::Canvas::Item->new ($root, 'Gnome2::Canvas::Text',
  25.                              x => 20,
  26.                              y => 15,
  27.                              fill_color => 'black',
  28.                              font => 'Sans 14',
  29.                              anchor => 'GTK_ANCHOR_NW',
  30.                              text => 'Hello, World!');
  31.   my $box = Gnome2::Canvas::Item->new ($root, 'Gnome2::Canvas::Rect',
  32.                                        x1 => 10, y1 => 5,
  33.                                        x2 => 150, y2 => 135,
  34.                                        fill_color => 'red',
  35.                                        outline_color => 'black');
  36.   $box->lower_to_bottom;
  37.   $box->signal_connect (event => sub {
  38.           my ($item, $event) = @_;
  39.           warn "event ".$event->type."\n";
  40.   });
  41.  
  42.   Gtk2->main;
  43.  
  44. =cut
  45.  
  46.  
  47.  
  48. =for position DESCRIPTION
  49.  
  50. =head1 DESCRIPTION
  51.  
  52. The Gnome Canvas is an engine for structured graphics that offers a
  53. rich imaging model, high-performance rendering, and a powerful,
  54. high level API.  It offers a choice of two rendering back-ends,
  55. one based on GDK for extremely fast display, and another based on
  56. Libart, a sophisticated, antialiased, alpha-compositing engine.
  57. This widget can be used for flexible display of graphics and for
  58. creating interactive user interface elements.
  59.  
  60. To create a new Gnome2::Canvas widget call C<< Gnome2::Canvas->new >> or
  61. C<< Gnome2::Canvas->new_aa >> for an anti-aliased mode canvas.
  62.  
  63. A Gnome2::Canvas contains one or more Gnome2::CanvasItem
  64. objects. Items consist of graphing elements like lines, ellipses,
  65. polygons, images, text, and curves.  These items are organized using
  66. Gnome2::CanvasGroup objects, which are themselves derived from
  67. Gnome2::CanvasItem.  Since a group is an item it can be contained within
  68. other groups, forming a tree of canvas items.  Certain operations, like
  69. translating and scaling, can be performed on all items in a group.
  70.  
  71. There is a special root group created by a Gnome2::Canvas.  This is the top
  72. level group under which all items in a canvas are contained.  The root group
  73. is available as C<< $canvas->root >>.
  74.  
  75. There are several different coordinate systems used by Gnome2::Canvas
  76. widgets.  The primary system is a logical, abstract coordinate space
  77. called world coordinates.  World coordinates are expressed as unbounded
  78. double floating point numbers.  When it comes to rendering to a screen
  79. the canvas pixel coordinate system (also referred to as just canvas
  80. coordinates) is used.  This system uses integers to specify screen
  81. pixel positions.  A user defined scaling factor and offset are used to
  82. convert between world coordinates and canvas coordinates.  Each item in
  83. a canvas has its own coordinate system called item coordinates.  This
  84. system is specified in world coordinates but they are relative to an
  85. item (0.0, 0.0 would be the top left corner of the item).  The final
  86. coordinate system of interest is window coordinates.  These are like
  87. canvas coordinates but are offsets from within a window a canvas is
  88. displayed in.  This last system is rarely used, but is useful when
  89. manually handling GDK events (such as drag and drop) which are 
  90. specified in window coordinates (the events processed by the canvas
  91. are already converted for you).
  92.  
  93. Along with different coordinate systems come methods to convert
  94. between them.  C<< $canvas->w2c >> converts world to canvas pixel
  95. coordinates and C<< canvas->c2w >> converts from canvas to
  96. world.  To get the affine transform matrix for converting
  97. from world coordinates to canvas coordinates call C<< $canvas->w2c_affine >>.
  98. C<< $canvas->window_to_world >> converts from window to world
  99. coordinates and C<< $canvas->world_to_window >> converts in the other
  100. direction.  There are no methods for converting between canvas and
  101. window coordinates, since this is just a matter of subtracting the
  102. canvas scrolling offset.  To convert to/from item coordinates use the
  103. methods defined for Gnome2::CanvasItem objects.
  104.  
  105. To set the canvas zoom factor (canvas pixels per world unit, the
  106. scaling factor) call C<< $canvas->set_pixels_per_unit >>; setting this
  107. to 1.0 will cause the two coordinate systems to correspond (e.g., [5, 6]
  108. in pixel units would be [5.0, 6.0] in world units).
  109.  
  110. Defining the scrollable area of a canvas widget is done by calling
  111. C<< $canvas->set_scroll_region >> and to get the current region
  112. C<< $canvas->get_scroll_region >> can be used.  If the window is
  113. larger than the canvas scrolling region it can optionally be centered
  114. in the window.  Use C<< $canvas->set_center_scroll_region >> to enable or
  115. disable this behavior.  To scroll to a particular canvas pixel coordinate
  116. use C<< $canvas->scroll_to >> (typically not used since scrollbars are
  117. usually set up to handle the scrolling), and to get the current canvas pixel
  118. scroll offset call C<< $canvas->get_scroll_offsets >>.
  119.  
  120. =cut
  121.  
  122.  
  123.  
  124. =head1 HIERARCHY
  125.  
  126.   Glib::Object
  127.   +----Glib::InitiallyUnowned
  128.        +----Gtk2::Object
  129.             +----Gtk2::Widget
  130.                  +----Gtk2::Container
  131.                       +----Gtk2::Layout
  132.                            +----Gnome2::Canvas
  133.  
  134.  
  135.  
  136. =cut
  137.  
  138. =head1 INTERFACES
  139.  
  140.   Glib::Object::_Unregistered::AtkImplementorIface
  141.   Gtk2::Buildable
  142.  
  143.  
  144.  
  145. =cut
  146.  
  147. =for object Gnome2::Canvas A structured graphics canvas
  148.  
  149. =cut
  150.  
  151.  
  152.  
  153.  
  154. =head1 METHODS
  155.  
  156. =head2 widget = Gnome2::Canvas-E<gt>B<new> 
  157.  
  158. Create a new empty canvas in non-antialiased mode.
  159.  
  160. =head2 widget = Gnome2::Canvas-E<gt>B<new_aa> 
  161.  
  162. Create a new empty canvas in antialiased mode.
  163.  
  164. =head2 boolean = $canvas->B<aa>
  165.  
  166.  
  167. Returns true if I<$canvas> was created in anti-aliased mode.
  168.  
  169.  
  170. =head2 ($bx1, $by1, $bx2, $by2) = Gnome2::Canvas->B<get_butt_points> ($x1, $y1, $x2, $y2, $width, $project)
  171.  
  172. =over
  173.  
  174. =item * $x1 (double) 
  175.  
  176. =item * $y1 (double) 
  177.  
  178. =item * $x2 (double) 
  179.  
  180. =item * $y2 (double) 
  181.  
  182. =item * $width (double) 
  183.  
  184. =item * $project (integer) 
  185.  
  186. =back
  187.  
  188.  
  189.  
  190. =head2 (wx, wy) = $canvas-E<gt>B<c2w> ($cx, $cy)
  191.  
  192. =over
  193.  
  194. =item * $cx (integer) 
  195.  
  196. =item * $cy (integer) 
  197.  
  198. =back
  199.  
  200. =head2 boolean = $canvas-E<gt>B<get_center_scroll_region> 
  201.  
  202. =head2 $canvas-E<gt>B<set_center_scroll_region> ($center_scroll_region)
  203.  
  204. =over
  205.  
  206. =item * $center_scroll_region (boolean) 
  207.  
  208. =back
  209.  
  210. =head2 list = $canvas-E<gt>B<get_color> ($spec)
  211.  
  212. =over
  213.  
  214. =item * $spec (string) 
  215.  
  216. =back
  217.  
  218.  
  219. Returns an integer indicating the success of the color allocation and a
  220. GdkColor.
  221.  
  222.  
  223. =head2 unsigned = $canvas-E<gt>B<get_color_pixel> ($rgba)
  224.  
  225. =over
  226.  
  227. =item * $rgba (integer) 
  228.  
  229. =back
  230.  
  231. =head2 rgbdither = $canvas-E<gt>B<get_dither> 
  232.  
  233. =head2 $canvas-E<gt>B<set_dither> ($dither)
  234.  
  235. =over
  236.  
  237. =item * $dither (Gtk2::Gdk::RgbDither) 
  238.  
  239. =back
  240.  
  241. =head2 item = $canvas-E<gt>B<get_item_at> ($x, $y)
  242.  
  243. =over
  244.  
  245. =item * $x (double) 
  246.  
  247. =item * $y (double) 
  248.  
  249. =back
  250.  
  251. =head2 ($mx1, $my1, $mx2, $my2) = Gnome2::Canvas->B<get_miter_points> ($x1, $y1, $x2, $y2, $x3, $y3, $width)
  252.  
  253. =over
  254.  
  255. =item * $x1 (double) 
  256.  
  257. =item * $y1 (double) 
  258.  
  259. =item * $x2 (double) 
  260.  
  261. =item * $y2 (double) 
  262.  
  263. =item * $x3 (double) 
  264.  
  265. =item * $y3 (double) 
  266.  
  267. =item * $width (double) 
  268.  
  269. =back
  270.  
  271.  
  272.  
  273. =head2 double = $canvas->B<get_pixels_per_unit>
  274.  
  275. Fetch I<$canvas>' scale factor.
  276.  
  277. =head2 $canvas-E<gt>B<set_pixels_per_unit> ($n)
  278.  
  279. =over
  280.  
  281. =item * $n (double) 
  282.  
  283. =back
  284.  
  285.  
  286. Set the zooming factor of I<$canvas> by specifying the number of screen
  287. pixels that correspond to one canvas unit.
  288.  
  289.  
  290. =head2 double = Gnome2::Canvas-E<gt>B<polygon_to_point> ($poly_ref, $x, $y)
  291.  
  292. =over
  293.  
  294. =item * $poly_ref (arrayref) coordinate pairs that make up the polygon
  295.  
  296. =item * $x (double) 
  297.  
  298. =item * $y (double) 
  299.  
  300. =back
  301.  
  302. Return the distance from the point I<$x>,I<$y> to the polygon described by
  303. the vertices in I<$poly_ref>, or zero if the point is inside the polygon.
  304.  
  305. =head2 $canvas-E<gt>B<request_redraw> ($x1, $y1, $x2, $y2)
  306.  
  307. =over
  308.  
  309. =item * $x1 (integer) 
  310.  
  311. =item * $y1 (integer) 
  312.  
  313. =item * $x2 (integer) 
  314.  
  315. =item * $y2 (integer) 
  316.  
  317. =back
  318.  
  319. =head2 group = $canvas-E<gt>B<root> 
  320.  
  321. =head2 (cx, cy) = $canvas-E<gt>B<get_scroll_offsets> 
  322.  
  323. =head2 (x1, y1, x2, y2) = $canvas-E<gt>B<get_scroll_region> 
  324.  
  325. =head2 $canvas-E<gt>B<set_scroll_region> ($x1, $y1, $x2, $y2)
  326.  
  327. =over
  328.  
  329. =item * $x1 (double) 
  330.  
  331. =item * $y1 (double) 
  332.  
  333. =item * $x2 (double) 
  334.  
  335. =item * $y2 (double) 
  336.  
  337. =back
  338.  
  339. =head2 $canvas-E<gt>B<scroll_to> ($cx, $cy)
  340.  
  341. =over
  342.  
  343. =item * $cx (integer) 
  344.  
  345. =item * $cy (integer) 
  346.  
  347. =back
  348.  
  349. =head2 $canvas-E<gt>B<set_stipple_origin> ($gc)
  350.  
  351. =over
  352.  
  353. =item * $gc (Gtk2::Gdk::GC) 
  354.  
  355. =back
  356.  
  357. =head2 $canvas-E<gt>B<update_now> 
  358.  
  359. =head2 (cx, cy) = $canvas-E<gt>B<w2c> ($wx, $wy)
  360.  
  361. =over
  362.  
  363. =item * $wx (double) 
  364.  
  365. =item * $wy (double) 
  366.  
  367. =back
  368.  
  369. =head2 $affine = $canvas->B<w2c_affine>
  370.  
  371. =over
  372.  
  373. =back
  374.  
  375. Fetch the affine transform that converts from world coordinates to canvas
  376. pixel coordinates.
  377.  
  378. Note: This method was completely broken for all
  379. $Gnome2::Canvas::VERSION < 1.002.
  380.  
  381. =head2 (cx, cy) = $canvas-E<gt>B<w2c_d> ($wx, $wy)
  382.  
  383. =over
  384.  
  385. =item * $wx (double) 
  386.  
  387. =item * $wy (double) 
  388.  
  389. =back
  390.  
  391. =head2 (worldx, worldy) = $canvas-E<gt>B<window_to_world> ($winx, $winy)
  392.  
  393. =over
  394.  
  395. =item * $winx (double) 
  396.  
  397. =item * $winy (double) 
  398.  
  399. =back
  400.  
  401. =head2 (winx, winy) = $canvas-E<gt>B<world_to_window> ($worldx, $worldy)
  402.  
  403. =over
  404.  
  405. =item * $worldx (double) 
  406.  
  407. =item * $worldy (double) 
  408.  
  409. =back
  410.  
  411.  
  412.  
  413. =cut
  414.  
  415.  
  416. =head1 PROPERTIES
  417.  
  418. =over
  419.  
  420. =item 'aa' (boolean : readable / writable / construct-only)
  421.  
  422. The antialiasing mode of the canvas.
  423.  
  424. =item 'focused-item' (Gnome2::Canvas::Item : readable / writable)
  425.  
  426. =back
  427.  
  428.  
  429.  
  430. =cut
  431.  
  432.  
  433. =head1 SIGNALS
  434.  
  435. =over
  436.  
  437. =item B<draw-background> (Gnome2::Canvas, Gtk2::Gdk::Drawable, integer, integer, integer, integer)
  438.  
  439. =item B<render-background> (Gnome2::Canvas, gpointer)
  440.  
  441. =back
  442.  
  443.  
  444.  
  445. =cut
  446.  
  447.  
  448. =head1 ENUMS AND FLAGS
  449.  
  450. =head2 enum Gtk2::Gdk::RgbDither
  451.  
  452. =over
  453.  
  454. =item * 'none' / 'GDK_RGB_DITHER_NONE'
  455.  
  456. =item * 'normal' / 'GDK_RGB_DITHER_NORMAL'
  457.  
  458. =item * 'max' / 'GDK_RGB_DITHER_MAX'
  459.  
  460. =back
  461.  
  462.  
  463.  
  464.  
  465. =cut
  466.  
  467. =for position SEE_ALSO
  468.  
  469. =head1 SEE ALSO
  470.  
  471. Gnome2::Canvas::index(3pm) lists the generated Perl API reference PODs.
  472.  
  473. Frederico Mena Quintero's whitepaper on the GNOME Canvas:
  474. http://developer.gnome.org/doc/whitepapers/canvas/canvas.html
  475.  
  476. The real GnomeCanvas is implemented in a C library; the Gnome2::Canvas module
  477. allows a Perl developer to use the canvas like a normal gtk2-perl object.
  478. Like the Gtk2 module on which it depends, Gnome2::Canvas follows the C API of
  479. libgnomecanvas-2.0 as closely as possible while still being perlish.
  480. Thus, the C API reference remains the canonical documentation; the Perl
  481. reference documentation lists call signatures and argument types, and is
  482. meant to be used in conjunction with the C API reference.
  483.  
  484. GNOME Canvas Library Reference Manual
  485. http://developer.gnome.org/doc/API/2.0/libgnomecanvas/index.html
  486.  
  487. perl(1), Glib(3pm), Gtk2(3pm).
  488.  
  489. To discuss gtk2-perl, ask questions and flame/praise the authors,
  490. join gtk-perl-list@gnome.org at lists.gnome.org.
  491.  
  492. =cut
  493.  
  494.  
  495.  
  496. =for position COPYRIGHT
  497.  
  498. =head1 AUTHOR
  499.  
  500. muppet <scott at asofyet dot org>, with patches from
  501. Torsten Schoenfeld <kaffetisch at web dot de>.
  502.  
  503. The DESCRIPTION section of this page is adapted from the documentation of
  504. libgnomecanvas.
  505.  
  506. =head1 COPYRIGHT AND LICENSE
  507.  
  508. Copyright 2003-2004 by the gtk2-perl team.
  509.  
  510. This library is free software; you can redistribute it and/or
  511. modify it under the terms of the GNU Library General Public
  512. License as published by the Free Software Foundation; either
  513. version 2 of the License, or (at your option) any later version.
  514.  
  515. This library is distributed in the hope that it will be useful,
  516. but WITHOUT ANY WARRANTY; without even the implied warranty of
  517. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  518. Library General Public License for more details.
  519.  
  520. You should have received a copy of the GNU Library General Public
  521. License along with this library; if not, write to the 
  522. Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
  523. Boston, MA  02111-1307  USA.
  524.  
  525. =cut
  526.  
  527.  
  528.  
  529.